﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioEmail
    {
        private IRepositorioEmail _repositorioEmail;

        /// <summary>
        /// 
        /// </summary>
        public NegocioEmail()
        {
            _repositorioEmail = new RepositorioEmail();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public Email Inserir(Email email)
        {
            email.Codigo = GeradorCodigo.GerarCodigo(1);
            email.Codigo += (_repositorioEmail.ObterUltimoIdCodigoInteiro() + 1).ToString();
            email.Codigo += GeradorCodigo.GerarCodigo(1, email.Codigo);
            return _repositorioEmail.Inserir(email);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public Email Atualizar(Email email)
        {
            return _repositorioEmail.Atualizar(email);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="email"></param>
        public void Excluir(Email email)
        {
            Email emailTmp = ObterPorId(email.EmailId);
            _repositorioEmail.Excluir(emailTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<Email> ObterTodos()
        {
            return _repositorioEmail.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Email ObterPorId(int id)
        {
            return _repositorioEmail.ObterPorId(id);
        }

        public Email ObterPorCodigo(string codigo)
        {
            return _repositorioEmail.ObterPorCodigo(codigo);
        }

        public IList<Email> ObterPorPessoa(Pessoa pessoa)
        {
            return _repositorioEmail.ObterPorPessoa(pessoa);
        }
    }
}